課程資訊
課程名稱
分散式系統與雲端應用開發實務
Practices for Distributed Systems and Cloud Application Development 
開課學期
109-2 
授課對象
管理學院  資訊管理學系  
授課教師
莊裕澤 
課號
IM5057 
課程識別碼
725 U3380 
班次
 
學分
3.0 
全/半年
半年 
必/選修
選修 
上課時間
星期四7,8,9(14:20~17:20) 
上課地點
管一203 
備註
限學士班三年級以上
總人數上限:40人 
 
課程簡介影片
 
核心能力關聯
本課程尚未建立核心能力關連
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

由人工智慧、物聯網、大數據、雲端運算等新興科技所帶來的數位化浪潮正在衝擊與改變各種產業,「服務上雲端」也成為數位轉型的關鍵策略。有別於傳統大型應用系統的開發,雲端服務著重在快速部署、靈活與彈性擴充 (elastic & scalable),因此微服務 (microservices)、容器化 (containerization) 等概念逐漸取代了單體式架構 (monolithic)、虛擬化 (virtualization) 概念,成為業界目前開發雲端應用服務的主流。

本課程目標在提供學生分散式系統與雲端應用服務開發所需要的基礎理論知識與實務技能。課程的內容從分散式系統的基本知識開始,到GFS, Hadoop, MapReduce大型分散式儲存系統與運算架構,及中介軟體 (middleware)、虛擬化概念 (virtualization)等大型分散式系統常用的開發軟體與平台,再到Docker containers, Kubernetes, Amazon ECS &EKS 等目前雲端應用服務常用的開發、部署、擴充和管理工具。課程亦將邀請業界專家來協助授課,包括工具的使用及分享實務開發的經驗,讓學校的課程可以直接介接到業界的實務需求。

The purpose of the course is to provide students with the fundamental knowledge on the design and implementation of distributed and cloud systems, as well as the practices of popular tools for cloud applications development, including VMware, Docker containers, Kubernetes, Amazon ECS &EKS, and Google cloud platforms.  

課程目標
提供分散式系統與雲端應用服務開發所需要的基礎理論知識與實務技能 
課程要求
具基本的網路技術知識與Python 程式設計能力 
預期每週課後學習時數
 
Office Hours
另約時間 
指定閱讀
隨個單元指定相關論文、網路教材與資源 
參考書目
Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011. 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
作業 
30% 
 
2. 
期末考 
30% 
 
3. 
Term project 
40% 
 
 
課程進度
週次
日期
單元主題
第1週
2/25  Introduction: Characteristics of Distributed Systems

Reading:
Ch.1, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011. 
第2週
3/4  Basics of Distributed Systems: System Models, Name Services, Synchronization, Coordination, Time and Security (extended to next week)

Reading:
Ch.2, 13-15, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011. 
第3週
3/11  Basics of Distributed Systems (continued from previous week)

Transactions Processing and Concurrency Control (extended to next week)

Reading:
Ch.16-17, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011. 
第4週
3/18  Replication, fault-tolerant services, and highly available services

Reading:

1. Ch.18, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011.

2. Dynamo: amazon's highly available key-value store, ACM SIGOPS Operating Systems ReviewOctober 2007.

Ref.:
AWS DynamoDB 
第5週
3/25  Large Distributed File System, Part I
Case Study: HDFS - Hadoop Distributed File System (HDFS) & MapReduce

Reading:

1. Ch.12, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011.

2. The hadoop distributed file system: Architecture and design, D. Borthakur, 2007, or the web page version HDFS Architecture Guide, Apache

3. The Hadoop Distributed File System, K. Shvachko, H. Kuang, S Radia, R. Chansler, IEEE MSST 2010

4. The Google File System, Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, ACM SOSP 2003

Ref.:

1. MapReduce: Simplified data processing on large clusters, J. Dean & S. Ghemawat, Communications of the ACM, 2008, & OSDI 2004. 
第6週
4/8  Large Distributed File System, Part II
Case Study: Ceph & RADOS

Reading:

1. Ceph: a scalable, high-performance distributed file system, S. A. Weil, et al., OSDI 2006.

2. RADOS: a scalable, reliable storage service for petabyte-scale storage clusters, S. A. Weil, et al., PDSW 2007

3. CRUSH Controlled, Scalable, Decentralized Placement of Replicated Data, S. A. Weil, et al., SC2006

4. Ch.21, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011.
 
第7週
4/15  Large Distributed File System, Part III
Case Study: Ceph & RADOS

Reading:

1. The Chubby lock service for loosely-coupled distributed systems, M. Burrows, OSDI 2006.

2. Bigtable: A Distributed Storage System for Structured Data, F. Chang, et al., ACMTOCS 2008.
 
第8週
4/22  Cloud Computing & Virtualization

Guest lecturer from VMware: VM, 容器大結合 擁抱雲原生應用, Phoenix Liu

Pre-class video:


KubeAcademy 免費線上學習資源


1. 完成KubeAcademy線上課程,了解Containers/ K8s 基礎概念:

-Getting Started with Kubernetes

-Container 101

-Kubernetes 101

2. 動手做 Hands-on with Kubernetes and Containers

-Hands-On with Kubernetes and Containers

Ref.:

1. A view of cloud computing, M. Armbrust at al., CACM 2010.

2. Memory resource management in VMware ESX server, C. A. Waldspurger, ACM SIGOPS Operating Systems Review, Dec. 2002

3. Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor, J. Sugerman et al., USENIX Annual Tech. Conf., 2001

4. Introduction to VMware Infrastructure, VMWare 2008. 
第9週
4/29  Guest lecturer: Stefan Hong, CTO & cofounder, Taiwan AI Labs

Docker Containers

Ref.:

1. Docker overview

2. Container and Microservice Driven Design for Cloud Infrastructure DevOps, IEEE IC2E 2016.

3. Containers and Cloud: From LXC to Docker to Kubernetes, IEEE Cloud Computing, Vol. 1-3, Sept. 2014)
 
第10週
5/6  Middleware & Web Services

Reading:
Ch. 5, 8, 9, Distributed Systems: Concepts and Design 5th Ed., C. Coulouris et al., 5th ed., 2011.

Kubernetes

Reading:

1. Large-scale cluster management at Google with Borg, A. Verma, et al., EuroSys 2015.

2. Borg, Omega, and Kubernetes, B. Burns et al., ACMQueue 2016

Ref.:

1. kubernetes

2. Borg: The Predecessor to Kubernetes

3. Large-scale cluster management at Google with Borg, EuroSys 2015 presentation recording. 
第11週
5/6  Exam (6-8:30pm) (教室:管院一館國學講堂) 
第12週
5/13  Guest lecturer from Amazon AWS: Cathy Lai

Running Container-Enabled Microservices on AWS (Part I)

Ref.:
Getting started with Amazon EKS
 
第13週
5/20  Guest lecturer from Amazon AWS: Cathy Lai

Running Container-Enabled Microservices on AWS (Part II)

Ref.:
AWS CONTAINERS IMMERSION DAY

 
第14週
5/20 (6:30-9:10pm) (教室:管院一館國學講堂)   Guest lecturers: 劉啟祥, 中華電信研究院

Case Study: multi-clouds & service mesh on kubernetes

Term Project Requirement 
第15週
5/27  Guest lecturer: Browy Lin (林士翔) & Sasa Pan (潘靖筠), iKala

Google Cloud Platform, Google Kubernetes Engine (GKE)

Ref.:
kubernetes 
第16週
6/10  Term Projects Demo